package cn.iocoder.yudao.module.member.service.userrefund;

import java.util.*;
import javax.validation.*;

import cn.iocoder.yudao.module.member.controller.admin.userrefund.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.userrefund.UserRefundDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.web.multipart.MultipartFile;

/**
 * 退款 Service 接口
 *
 * @author 芋道源码
 */
public interface UserRefundService {

    /**
     * 创建退款
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createUserRefund(@Valid UserRefundSaveReqVO createReqVO);

    /**
     * 更新退款
     *
     * @param updateReqVO 更新信息
     */
    Boolean updateUserRefund(UserRefundUpdateReqVO updateReqVO);

    /**
     * 编辑
     *
     * @param id      id
     * @param files   文件
     * @param status  状态
     * @param type    退款方式
     * @param contact 联系方式
     * @param remark  备注
     * @return 是否成功
     */
    Boolean updateUserRefund(Long id, MultipartFile[] files, Integer status, Integer type, String contact, String remark);

    /**
     * 删除退款
     *
     * @param id 编号
     */
    void deleteUserRefund(Long id);

    /**
     * 获得退款
     *
     * @param id 编号
     * @return 退款
     */
    UserRefundDO getUserRefund(Long id);

    /**
     * 获得退款分页
     *
     * @param pageReqVO 分页查询
     * @return 退款分页
     */
    PageResult<UserRefundRespVO> getUserRefundPage(UserRefundPageReqVO pageReqVO);

    /**
     * 获取用户总退款
     *
     * @param userId
     * @return
     */
    Integer totalRefund(Long userId);

}